FireBird - vratenie cisla s decimalseparator ","

Otázka od: Roland Turcan

14. 12. 2002 23:14

Hello Delphi CZ konferencia!

Ako by som dostal zo selectu cislo ktore by bolo formatovane s decimal
separatorom "," a nie ako to on vrati ".". Ide mi o to ze potrebujem
aby mi ulozena procedure vratila jeden dlhy text, ktory je pokladany z
roznych fieldov roznych typov ale ciselne by som potreboval formatovat
na "12345,12 Sk".

Uvazujem o UDF s vyuzitim formatu, ale to by som chcel pouzit len ako
vychodisko z nudze.

PS: DisplayFormat mi neriesi problem.

--
Best regards, TRoland
http://www.rotursoft.sk

Odpovedá: Petr Palicka

16. 12. 2002 11:44

ahoj,

  obavam se, ze asi nijak (krom treba te UDF), protoze standart
SQL definuje jako desetinny oddelovac "." a to vzdy, bez ohledu
na locale. ma to svoji logiku, protoze, jak jinak bys dostal cislo
s carkou treba do insertu? no mozna jako literal, tedy "1251,24"
zadat vcetne uvozovovek (a opacne dostat to ve stringu). no to je
to k cemu si budes muset napsat vhodnou UDFku, pokud podobnou
nekde nenajdes. leda:

SELECT
  INT(MojeCislo) || ',' || FRAC(MojeCislo)
FROM
  MojeTabulka

pricemz predpokladam pouziti dodanych UDF funkci INT a FRAC.
krom toho bude mozna nutne pouzit:
  CAST(INT(MojeCislo) as VARCHAR(10)) || ',' ||
  CAST(FRAC(MojeCislo) as VARCHAR(10))
no a cely to muzes hodit jako COMPUTE BY sloupec, takze ho
pak budes moci selectit primo. jen INSERT / UPDATE na nej nepujde
a nepujde zrejme scitat, sumovat atp...


peca